home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Information
/
CSMP Digest
/
volume 3
/
csmp-digest-v3-018
< prev
next >
Wrap
Internet Message Format
|
1995-12-31
|
87KB
From: pottier@clipper.ens.fr (Francois Pottier)
Subject: csmp-digest-v3-018
Date: Fri, 22 Apr 94 12:17:36 MET DST
C.S.M.P. Digest Fri, 22 Apr 94 Volume 3 : Issue 18
Today's Topics:
CD-ROM of Mac source code?
Color Quickdraw Intimcay
Custom popup menu
Editable pop-up menus
Females who answer questions?
HELP - PICT File ColorTables and Palettes
Max # of open files
Proper QT PICT creation?
Q: Changing font & size of dialog items
Removing PowerPC code from a fat binary
Roman Numerals
SCSI Drivers
The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
(pottier@clipper.ens.fr).
The digest is a collection of article threads from the internet newsgroup
comp.sys.mac.programmer. It is designed for people who read c.s.m.p. semi-
regularly and want an archive of the discussions. If you don't know what a
newsgroup is, you probably don't have access to it. Ask your systems
administrator(s) for details. If you don't have access to news, you may
still be able to post messages to the group by using a mail server like
anon.penet.fi (mail help@anon.penet.fi for more information).
Each issue of the digest contains one or more sets of articles (called
threads), with each set corresponding to a 'discussion' of a particular
subject. The articles are not edited; all articles included in this digest
are in their original posted form (as received by our news server at
nef.ens.fr). Article threads are not added to the digest until the last
article added to the thread is at least two weeks old (this is to ensure that
the thread is dead before adding it to the digest). Article threads that
consist of only one message are generally not included in the digest.
The digest is officially distributed by two means, by email and ftp.
If you want to receive the digest by mail, send email to listserv@ens.fr
with no subject and one of the following commands as body:
help Sends you a summary of commands
subscribe csmp-digest Your Name Adds you to the mailing list
signoff csmp-digest Removes you from the list
Once you have subscribed, you will automatically receive each new
issue as it is created.
The official ftp info is //ftp.dartmouth.edu/pub/csmp-digest.
Questions related to the ftp site should be directed to
scott.silver@dartmouth.edu. Currently no previous volumes of the CSMP
digest are available there.
Also, the digests are available to WAIS users as comp.sys.mac.programmer.src.
-------------------------------------------------------
>From celestin@pt.olympus.net (Paul Celestin)
Subject: CD-ROM of Mac source code?
Date: 5 Apr 1994 21:39:46 GMT
Organization: Celestin Company
Does anyone know of a CD-ROM of Mac source code? I know there are plenty of
sites on the Internet with source code, but has anyone compiled it all into
one CD-ROM? If not, are there any people interested in something like this?
If it's not available, I might do it myself.
Thanks for all replies.
--
celestin@pt.olympus.net (Paul Celestin, Celestin Company)
Check out my URL: file://speedway.net/pub/celestin/www/Celestin.html
+++++++++++++++++++++++++++
>From blob@apple.com (Brian Bechtel)
Date: 7 Apr 1994 22:57:04 -0700
Organization: Apple Computer, Inc., Cupertino, California
celestin@pt.olympus.net (Paul Celestin) writes:
>Does anyone know of a CD-ROM of Mac source code? I know there are plenty of
>sites on the Internet with source code, but has anyone compiled it all into
>one CD-ROM? If not, are there any people interested in something like this?
>If it's not available, I might do it myself.
MacTech Journal sells a CD-ROM with all the source code and articles
they've ever published.
Wayzata publishes Disc Tracy, which is a collection of Macintosh source
code on CD-ROM. Wayzata is in the metropolitan Minneapolis Minnesota
area.
--Brian Bechtel blob@apple.com "My opinion, not Apple's"
+++++++++++++++++++++++++++
>From Rand_Arnold@blt.berkeley.ca.us (Rand Arnold)
Date: Fri, 8 Apr 94 17:24:17 PST
Organization: Berkeley Learning Technologies, Inc.
Paul Celestin writes:
>>Does anyone know of a CD-ROM of Mac source code? I know there are plenty of
>>sites on the Internet with source code, but has anyone compiled it all into
>>one CD-ROM? If not, are there any people interested in something like this?
>>If it's not available, I might do it myself.
Xplain Corporation sells a CD-ROM that contains all of the source code from the
last eight years of MacTutor/MacTech magazine. It can be quite a resource.
Xplain can be reached at custservice@xplain.com or info@xplain.com, voice (310)
575-4343.
Rand
Berkeley Learning Technologies, Inc. (510) 540-5963
---------------------------
>From veenkerb@seq.oit.osshe.edu (Brian Veenker)
Subject: Color Quickdraw Intimcay
Date: 1 Apr 1994 13:00:57 -0600
Organization: UTexas Mail-to-News Gateway
Crud. So GWorlds don't work on non-Color Quickdraw machines. One user
suggested that I just leave my data in some native format and just draw
it as I go. I want this prog to run on everything, but that sounds like a
huge pain in the butt.. Especially since I probably won't be able to work
on it on my PB100 now...
WAIT a minute, I just copied the thing over (to my PB100), and it woiks!
Groovy! I'm back in business! Thanks everyone!
BTW: does it make any difference that I'm only using a 1-bit depth in my
GWorld? Could that have helped? Or is it that my PB100 just happens to be
running Color Quickdraw?
Thanks again everybody!
Brian Veenker
+++++++++++++++++++++++++++
>From ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University)
Date: 5 Apr 94 12:43:02 +1300
Organization: University of Waikato, Hamilton, New Zealand
In article <Pine.3.88.9404011059.A20930-0100000@seq.oit.osshe.edu>, veenkerb@seq.oit.osshe.edu (Brian Veenker) writes:
> Crud. So GWorlds don't work on non-Color Quickdraw machines. One user
> suggested that I just leave my data in some native format and just draw
> it as I go. I want this prog to run on everything, but that sounds like a
> huge pain in the butt.. Especially since I probably won't be able to work
> on it on my PB100 now...
>
> WAIT a minute, I just copied the thing over (to my PB100), and it woiks!
> Groovy! I'm back in business! Thanks everyone!
>
> BTW: does it make any difference that I'm only using a 1-bit depth in my
> GWorld? Could that have helped? Or is it that my PB100 just happens to be
> running Color Quickdraw?
Your PB100 does not have Color QuickDraw. However, under System 7, even
non-Color-QuickDraw machines have GWorlds, albeit limited to 1 bit per pixel,
as you were using.
IM6 has a list somewhere of the Color QuickDraw calls you're allowed to make
on a non-Color-QuickDraw machine under System 7.
Lawrence D'Oliveiro fone: +64-7-856-2889
Info & Tech Services Division fax: +64-7-838-4066
University of Waikato electric mail: ldo@waikato.ac.nz
Hamilton, New Zealand 37^ 47' 26" S, 175^ 19' 7" E, GMT+12:00
+++++++++++++++++++++++++++
>From Ron_Hunsinger@bmug.org (Ron Hunsinger)
Date: Sun, 3 Apr 94 19:56:38 PST
Organization: Berkeley Macintosh Users Group
veenkerb@seq.oit.osshe.edu (Brian Veenker) writes:
>Crud. So GWorlds don't work on non-Color Quickdraw machines. One user
>suggested that I just leave my data in some native format and just draw
>it as I go. I want this prog to run on everything, but that sounds like a
>huge pain in the butt.. Especially since I probably won't be able to work
>on it on my PB100 now...
>
>WAIT a minute, I just copied the thing over (to my PB100), and it woiks!
>Groovy! I'm back in business! Thanks everyone!
>
>BTW: does it make any difference that I'm only using a 1-bit depth in my
>GWorld? Could that have helped? Or is it that my PB100 just happens to be
>running Color Quickdraw?
Don't confuse "Color Quickdraw" with "monitor is displaying color".
"Color Quickdraw" means that you have the version of Quickdraw that
understands what color is. It doesn't necessarily mean that you have
your monitor(s) set to display color, or even that you have a color-
capable monitor.
Color Quickdraw is in the ROMS of Mac II and later machines, and is also
in System 7 or later. So you can probably depend on color QD and still
run on almost everything. You will be locking out only SE and earlier
machines running on 6.0.8 and earlier, and I think even for those machines
there may be an INIT that will supply color QD. For that matter, if you
are using GWorlds, you are already depending on Sys7, so you should have
color QD already. Of course, the noble thing would be to check anyway...
-Ron Hunsinger
+++++++++++++++++++++++++++
>From Carl R. Osterwald <carl_osterwald@nrel.gov>
Date: Wed, 6 Apr 94 16:08:32 GMT
Organization: National Renewable Energy Laboratory
In article <001343F1.fc@bmug.org> Ron Hunsinger, Ron_Hunsinger@bmug.org
writes:
>Color Quickdraw is in the ROMS of Mac II and later machines, and is also
>in System 7 or later. So you can probably depend on color QD and still
>run on almost everything. You will be locking out only SE and earlier
>machines running on 6.0.8 and earlier, and I think even for those
machines
>there may be an INIT that will supply color QD. For that matter, if you
>are using GWorlds, you are already depending on Sys7, so you should have
>color QD already. Of course, the noble thing would be to check anyway...
This is not entirely true, Color QD will not run on 68000 Macs, not even
with the prism INIT. Many of the Color QD routines are written in 68020
assembler. One of the Tech Notes explains this.
+++++++++++++++++++++++++++
>From gdl@stlawrence.maths (Greg Landweber)
Date: 08 Apr 1994 11:37:03 GMT
Organization: (none)
In article <001343F1.fc@bmug.org> Ron_Hunsinger@bmug.org (Ron Hunsinger) writes:
Color Quickdraw is in the ROMS of Mac II and later machines, and is also
in System 7 or later. So you can probably depend on color QD and still
run on almost everything. You will be locking out only SE and earlier
machines running on 6.0.8 and earlier, and I think even for those machines
there may be an INIT that will supply color QD. For that matter, if you
are using GWorlds, you are already depending on Sys7, so you should have
color QD already. Of course, the noble thing would be to check anyway...
This is NOT true. Color Quickdraw is optimized for use with a 68020
processor or better, and it will NOT run on any machine with a 68000.
System 7 contains an updated version of 32-bit QuickDraw, but that is
useless on machines like the Plus, SE, Classic, Portable, PB100.
-- Greg "Browser" Landweber
---------------------------
>From ping@genie.demon.co.uk ("K.H.Ping")
Subject: Custom popup menu
Date: Fri, 8 Apr 1994 15:59:42 +0000
Organization: Associated Newspapers
Hi,
can anyone tell me how to do a popup menu (with no popup box) that is
attached to a window bar (like the one that appears if you hold down the
option key and click in the title bar of a window under THINK C 6.0)?
+++++++++++++++++++++++++++
>From petm@soda.berkeley.edu (Peter Mattis)
Date: 8 Apr 1994 20:22:53 GMT
Organization: Computer Science Undergrad Assoc., UCBerkeley
In article <765849410snx@genie.demon.co.uk>,
K.H.Ping <ping@genie.demon.co.uk> wrote:
>Hi,
>
>can anyone tell me how to do a popup menu (with no popup box) that is
>attached to a window bar (like the one that appears if you hold down the
>option key and click in the title bar of a window under THINK C 6.0)?
Well, since the application (you) draws the popup box then if you
don't want one then don't draw it.
To do a popup like the one in THINK C 6.0 all you have to do is
call PopUpMenuSelect(myMenu, vPosition, hPostion, lastItem)
-myMenu is the MenuHandle to your menu
-vPosition is the vertical position of the mouse click.
(you can adjust this value so that the popup doesn't appear
below and to the right of the cursor always like it does in
THINK)
-hPosition is the horizontal position of the mouse click.
(you can adjust this value just like vPosition)
-lastItem is the number of the last item selected. But since
there is no "last item" because you don't have a popup box then
this value should be 1.
Oh, and you call PopUpMenuSelect whenever you determine there has
been an option-click in the title bar of your window.
-Peter Mattis
---------------------------
>From molly@i-link.com (Molly Gilmore Baldwin)
Subject: Editable pop-up menus
Date: 6 Apr 1994 03:51:34 GMT
Organization: I-Link, Ltd., Des Moines, Iowa, US - 515/255-2754
I'd like to set up a pop-up menu that people could also type a value in
for. The most common example of what I'm trying to do would be a point
size pop-up, in which you get to pick the common point sizes in 6-point
increments, but where you could also just type in 17.
Does anyone know of some good examples of how to do this?
+++++++++++++++++++++++++++
>From pcastine@jake.prz.tu-berlin.de (Peter Castine)
Date: Wed, 6 Apr 1994 19:24:31 GMT
Organization: PRZ TU-Berlin
molly@i-link.com (Molly Gilmore Baldwin) writes:
>I'd like to set up a pop-up menu that people could also type a value in
>for. The most common example of what I'm trying to do would be a point
>size pop-up, in which you get to pick the common point sizes in 6-point
>increments, but where you could also just type in 17.
>
>Does anyone know of some good examples of how to do this?
There are detailed examples of what this should look like in _Inside
Macintsoh VI_, see Figures 2-30 and 2-31 in the User Interface
chapter. I'm sure the examples are in _NIM_, but I don't have it,
so I can't tell you where to look.
Implementation is pretty straight-forward when you see the examples.
hope this pointer gets you on the right track...
--
Peter Castine | One child is shot every two hours
pcastine@jake.kgw.tu-berlin.de | in the U.S.A.
| Thank you for blocking gun control,
| N.R.A.
+++++++++++++++++++++++++++
>From ari@world.std.com (Ari I Halberstadt)
Date: Thu, 7 Apr 1994 00:21:43 GMT
Organization: The World Public Access UNIX, Brookline, MA
In article <molly-050494225023@ts1-3.i-link.com>,
Molly Gilmore Baldwin <molly@i-link.com> wrote:
>I'd like to set up a pop-up menu that people could also type a value in
>for. The most common example of what I'm trying to do would be a point
>size pop-up, in which you get to pick the common point sizes in 6-point
>increments, but where you could also just type in 17.
>
>Does anyone know of some good examples of how to do this?
You can use my Popup CDEF. I just sent the current version (1.0b3) to
the info-mac archives and it should be available there in the
/info-mac/dev/src directory within a few days. It was also posted a
few weeks ago to alt.sources.mac and is available in the file
ftpbio.bgsu.edu:/ftp/pub/alt.sources.mac/popupcdef1.0b3.cpt.hqx
The file "PopupCDEF-demo.c" contains sample code that shows how a font
size type-in popup menu can be managed.
--
Ari Halberstadt ari@world.std.com #include <std/disclaimer.h>
"These beetles were long considered to be very rare because very few
entomologists look for beetles in the mountains, in winter, at night,
during snow storms." -- Purves W. K., et al, "Life: The Science of
---------------------------
>From susanlesch@aol.com (SusanLesch)
Subject: Females who answer questions?
Date: 18 Mar 1994 04:52:04 -0500
Organization: America Online, Inc. (1-800-827-6364)
Informal survey
In your own experience, how many females regularly answer
programming and technical questions in this newsgroup? I
mean women who often answer (rather than ask) questions
about programming (or, failing that, anything you would
term "technical").
As determined informally in 1993 by a source I cannot
reveal, there were approximately two qualifiers in
Macintosh programming on the entire Internet. As
determined by myself, through logging CompuServe's
Macintosh Developers' Forums, I found about two also.
(Just a note that CIS' name fields allow full names,
unlike AOL and other online services who have only 10
available characters, which seems to lead to ambiguity in
gender by name.)
I do not mean to suggest that these 1000:1? ratios
reflect all working programmers! I am curious to know if
my source re: the Internet was being facetious or rather,
as I tend to suspect, being fairly accurate.
Thanks very much for any replies,
Susan Lesch
(an Internet and C novice)
P.S. Pardon the multiple postings, my mistake.
+++++++++++++++++++++++++++
>From wdh@netcom.com (Bill Hofmann)
Date: Fri, 18 Mar 1994 18:36:49 GMT
Organization: NETCOM On-line Communication Services (408 241-9760 guest)
susanlesch@aol.com (SusanLesch) writes:
>Informal survey
> In your own experience, how many females regularly answer
> programming and technical questions in this newsgroup? I
> mean women who often answer (rather than ask) questions
> about programming (or, failing that, anything you would
> term "technical").
Not many, but I think probably a larger percentage than are distributed
amongst the developer community as a whole. My experience with teaching
gobs of Apple and non-Apple developers is that *at this point* many of
the senior software types are still men, reflecting mostly a generational
lag in women's participation in the field. After all, my class at MIT
had about 15-20% women, so it isn't suprising that people my age who
post are mostly men. Plus fewer women seem to like to flame :->
--
-Bill Hofmann wdh@netcom.COM
Fresh Software and Instructional Design +1 510 524 0852
+++++++++++++++++++++++++++
>From schiffer@dispair.stsci.edu (Francis H. Schiffer 3rd)
Date: Fri, 18 Mar 1994 20:12:51 GMT
Organization: Self
In article <wdhCMvIDD.Dts@netcom.com>, wdh@netcom.com (Bill Hofmann) wrote:
> post are mostly men. Plus fewer women seem to like to flame :->
That is my wife's analysis as to why there are so few women posting on many
of the Usenet groups. There are many more posts by women on email circles
and/or Usenet groups where the flamage is minimal.
skip
--
Francis H Schiffer 3rd schiffer@stsci.edu - my opinions only, those of
skip@dispair.stsci.edu stscic::schiffer - my employer are unknown to me
+++++++++++++++++++++++++++
>From mikeh@kralizec.zeta.org.au (Michael Hore)
Date: 26 Mar 1994 16:55:02 +1000
Organization: Kralizec Dialup Unix Sydney: +61-2-837-1183 V.32bis
susanlesch@aol.com (SusanLesch) writes:
> In your own experience, how many females regularly answer
> programming and technical questions in this newsgroup? I
> mean women who often answer (rather than ask) questions
> about programming (or, failing that, anything you would
> term "technical").
>
> As determined informally in 1993 by a source I cannot
> reveal, there were approximately two qualifiers in
> Macintosh programming on the entire Internet.
I've been reading c.s.m.p for a couple of years now, and I'd have to
say that that's two more than I've ever noticed.
But I've been to a number of Mac developers' meetings here in
Sydney, Australia, and the ratio there was more like 10:1.
My son is studying CS at university - I must check with him to see
if the ratio is higher there, so that we could say that there's
any sort of trend.
As another poster said, I suspect there's a reluctance to get involved
in a Usenet group with all the flamage etc. that goes on.
[...snip...]
> I do not mean to suggest that these 1000:1? ratios
> reflect all working programmers! I am curious to know if
> my source re: the Internet was being facetious or rather,
> as I tend to suspect, being fairly accurate.
Looks accurate to me.
>Thanks very much for any replies,
>Susan Lesch
>(an Internet and C novice)
Welcome!
-- Mike.
- --------------------------------------------------------
Mike Hore mikeh@kralizec.zeta.org.au
.sig deliberately kept short to minimize .sig/noise ratio.
- --------------------------------------------------------
+++++++++++++++++++++++++++
>From lrucker@parcplace.com (Lee Ann Rucker)
Date: 30 Mar 1994 22:16:00 GMT
Organization: ParcPlace
susanlesch@aol.com (SusanLesch) writes:
> In your own experience, how many females regularly answer
> programming and technical questions in this newsgroup? I
> mean women who often answer (rather than ask) questions
> about programming (or, failing that, anything you would
> term "technical").
>
I've answered a few questions. I don't answer often, because questions
generally fall into two categories: so simple that the answer's been posted
before the question gets to my newsreader, or out of my area of expertise -
I see very few questions about the internals of the Smalltalk Virtual
Machine.
LeeAnn Rucker
ParcPlace Systems
+++++++++++++++++++++++++++
>From sichase@csa5.lbl.gov (SCOTT I CHASE)
Date: 31 Mar 1994 10:52 PST
Organization: Lawrence Berkeley Laboratory - Berkeley, CA, USA
In article <lrucker-300394141641@leeann-mac.parcplace.com>, lrucker@parcplace.com (Lee Ann Rucker) writes...
> susanlesch@aol.com (SusanLesch) writes:
>
> > In your own experience, how many females regularly answer
> > programming and technical questions in this newsgroup? I
> > mean women who often answer (rather than ask) questions
> > about programming (or, failing that, anything you would
> > term "technical").
> >
>
>I've answered a few questions. I don't answer often, because questions
>generally fall into two categories: so simple that the answer's been posted
>before the question gets to my newsreader, or out of my area of expertise -
>I see very few questions about the internals of the Smalltalk Virtual
>Machine.
Ah, well that's the kicker. Most men don't seem to let any of that stop
them.
-Scott
- ------------------ Physics is not a religion. If
Scott I. Chase it were, we'd have a much easier
SICHASE@CSA2.LBL.GOV time raising money. -Leon Lederman
+++++++++++++++++++++++++++
>From mikeh@kralizec.zeta.org.au (Michael Hore)
Date: 27 Mar 1994 12:56:33 +1000
Organization: Kralizec Dialup Unix Sydney: +61-2-837-1183 V.32bis
Yesterday I wrote:
>My son is studying CS at university - I must check with him to see
>if the ratio is higher there, so that we could say that there's
>any sort of trend.
He said it's about 10:1 there - but most of the 10% females are from
a non English-speaking background (Asian). So it's possible that
lack of confidence in English is another factor operating here.
This percentage isn't very different from what I remember when I
studied CS nearly 20 years ago, except that the females then were
all from an English-speaking background. So at least in this part
of the world, if we think the ratio of females "ought" to be rising,
for some reason, then we have a problem. It just isn't happening.
I know this has gone beyond what the original poster asked, but
interesting nonetheless.
-- Mike.
- --------------------------------------------------------
Mike Hore mikeh@kralizec.zeta.org.au
.sig deliberately kept short to minimize .sig/noise ratio.
- --------------------------------------------------------
+++++++++++++++++++++++++++
>From mikeh@kralizec.zeta.org.au (Michael Hore)
Date: 29 Mar 1994 16:55:02 +1000
Organization: Kralizec Dialup Unix Sydney: +61-2-837-1183 V.32bis
susanlesch@aol.com (SusanLesch) writes:
> In your own experience, how many females regularly answer
> programming and technical questions in this newsgroup? I
> mean women who often answer (rather than ask) questions
> about programming (or, failing that, anything you would
> term "technical").
>
> As determined informally in 1993 by a source I cannot
> reveal, there were approximately two qualifiers in
> Macintosh programming on the entire Internet.
I've been reading c.s.m.p for a couple of years now, and I'd have to
say that that's two more than I've ever noticed.
But I've been to a number of Mac developers' meetings here in
Sydney, Australia, and the ratio there was more like 10:1.
My son is studying CS at university - I must check with him to see
if the ratio is higher there, so that we could say that there's
any sort of trend.
As another poster said, I suspect there's a reluctance to get involved
in a Usenet group with all the flamage etc. that goes on.
[...snip...]
> I do not mean to suggest that these 1000:1? ratios
> reflect all working programmers! I am curious to know if
> my source re: the Internet was being facetious or rather,
> as I tend to suspect, being fairly accurate.
Looks accurate to me.
>Thanks very much for any replies,
>Susan Lesch
>(an Internet and C novice)
Welcome!
-- Mike.
- --------------------------------------------------------
Mike Hore mikeh@kralizec.zeta.org.au
.sig deliberately kept short to minimize .sig/noise ratio.
- --------------------------------------------------------
+++++++++++++++++++++++++++
>From mikeh@kralizec.zeta.org.au (Michael Hore)
Date: 29 Mar 1994 12:56:33 +1000
Organization: Kralizec Dialup Unix Sydney: +61-2-837-1183 V.32bis
Yesterday I wrote:
>My son is studying CS at university - I must check with him to see
>if the ratio is higher there, so that we could say that there's
>any sort of trend.
He said it's about 10:1 there - but most of the 10% females are from
a non English-speaking background (Asian). So it's possible that
lack of confidence in English is another factor operating here.
This percentage isn't very different from what I remember when I
studied CS nearly 20 years ago, except that the females then were
all from an English-speaking background. So at least in this part
of the world, if we think the ratio of females "ought" to be rising,
for some reason, then we have a problem. It just isn't happening.
I know this has gone beyond what the original poster asked, but
interesting nonetheless.
-- Mike.
- --------------------------------------------------------
Mike Hore mikeh@kralizec.zeta.org.au
.sig deliberately kept short to minimize .sig/noise ratio.
- --------------------------------------------------------
+++++++++++++++++++++++++++
>From rba26@cas.org (Brad Andrews)
Date: Fri, 8 Apr 1994 16:31:05 GMT
Organization: Chemical Abstracts Service
In article 60l@kralizec.zeta.org.au, mikeh@kralizec.zeta.org.au (Michael Hore) writes:
[snip]
]
]As another poster said, I suspect there's a reluctance to get involved
]in a Usenet group with all the flamage etc. that goes on.
]
[snip]
I have been flamed quite a few times by women on other forums, so I doubt
that is the sole reason. :)
- -
Brad Andrews
Brad.Andrews@cas.org
All opinions are strictly mine
---------------------------
>From perdue@csn.org (James "Newt" Perdue)
Subject: HELP - PICT File ColorTables and Palettes
Date: 7 Apr 1994 10:50:49 -0500
Organization: UTexas Mail-to-News Gateway
I'm pulling my hair out over this one: I'm trying to read Pict files,
display them and have their colors be accurate (256 colors):
I read a PICT file that I created in PhotoShop.
I use DrawPicture to transfer it to an off-screen GWorld.
I use the Picture Utilities GetPictInfo to return a Palette.
I install the Palette and everything is great! Colors are correct.
BUT....
The Picture Utilities takes TOO LONG for a commercial application I am
building. So, I need a way to merely access the color table that comes
along with the Pict file and build my own Palette. Looking at the pmTable
field in the offscreen GWORLD after I do the DrawPicture, it doesn't change
from Pict to Pict. WHAT TO DO??? I can't believe that there is not a way
to access the colortable directly from the Pict.
I am in desperate need to meet a deadline on this one. Any help would be
appreciated. (The person to help me solve it will get a free CD-ROM I am
developing!)
Thanks
Newt Perdue
Newt Perdue rmdp@csn.org
Rocky Mountain Digital Peeks 1-303-258-3779
PO Box 1576
Nederland, CO 80466
+++++++++++++++++++++++++++
>From Carl R. Osterwald <carl_osterwald@nrel.gov>
Date: Thu, 7 Apr 94 18:13:42 GMT
Organization: National Renewable Energy Laboratory
In article <199404071550.AA22028@teal.csn.org> James, perdue@csn.org
writes:
>from Pict to Pict. WHAT TO DO??? I can't believe that there is not a
way
>to access the colortable directly from the Pict.
It is possible, although it may not be entirely easy. You need to root
through the PICT data looking for opcodes $0090 or $0098, which are for
rect-clipped CopyBits, to find the offset to the color table. The first
block of data for these opcodes is the PixMap, which $32 bytes long.
Following the PixMap is the color table. Assuming the PICT file just
contains a PixMap from PhotoShop, you might be able to get away with
parsing just a few of the opcodes listed in IM Vol. V to get to the
CopyBits portion. If not, you will need to parse most or all of the
opcodes. Most are easy, but a number of them are variable length, which
will complicate things.
+++++++++++++++++++++++++++
>From giles@med.cornell.edu (Aaron Giles)
Date: Thu, 07 Apr 1994 17:10:59 -0500
Organization: Cornell University Medical College
In article <A9C99B66E0017D1A@cro.nrel.gov>, Carl R. Osterwald
<carl_osterwald@nrel.gov> wrote:
> In article <199404071550.AA22028@teal.csn.org> James, perdue@csn.org
> writes:
> >from Pict to Pict. WHAT TO DO??? I can't believe that there is not a
> >way to access the colortable directly from the Pict.
>
> It is possible, although it may not be entirely easy. You need to root
> through the PICT data looking for opcodes $0090 or $0098, which are for
> rect-clipped CopyBits, to find the offset to the color table.....
No, no, no! There is a completely clean, fast way of doing just what you
want. It's called the QuickDraw Bottleneck, and if you deal with PICTs
extensively, you'll need to know how to do it. For this case, you write a
StdBits bottleneck, which gets called whenever a CopyBits is performed in
the port, and in that bottleneck, you copy out the color table of the
source PixMap (since that's where the color data is coming from). The
code will look something like this:
CTabHandle gMyColors;
CTabHandle MyGetPICTColors(myPicture)
{
CQDProcs myProcs, *oldProcs;
gMyColors = nil; // nil result in case no colors found
SetPort(myDummyPort); // point to where drawing won't be seen
SetStdCProcs(&myProcs); // set up standard pointers
myProcs.bitsProc = MyStdBitsProc; // use UPP here if compiling for PowerPC
oldProcs = myDummyPort->grafProcs; // save old bottlenecks
myDummyPort->grafProcs = &myProcs; // install our new bottlenecks
DrawPicture(myPicture, &destRect); // this does all the magic
myDummyPort->grafProcs = oldProcs; // restore old bottlenecks
return gMyColors; // return the global result
}
pascal void MyStdBitsProc(BitMap *srcMap, Rect *srcRect, Rect *dstRect,
short tMode, RgnHandle maskRgn)
{
PixMapPtr thePixMap = (PixMapPtr)srcMap; // cast as a PixMapPtr
if (thePixMap->rowBytes & 0x8000) { // verify that this is a color source
gMyColors = thePixMap->pmTable; // get the color table handle
HandToHand(&gMyColors); // make a copy
}
}
Note that there's no error checking or niceties here, but this shows you
the general technique.
Aaron
--
Aaron Giles
Power Macintosh & Newton developer
Cornell University Medical College
giles@med.cornell.edu
---------------------------
>From lehmann@bert.cs.byu.edu (Ralf Lehmann)
Subject: Max # of open files
Date: 25 Mar 1994 22:53:08 GMT
Organization: Brigham Young University
>From inside my program, it seems I can only open about 12 files
simultaneously. What do I need to do (Toolbox call, Control
Panel, whatever...) to open more files than that ?
Thanks,
Ralf.
+++++++++++++++++++++++++++
>From sro@media.mit.edu (Shawn O'Donnell)
Date: Sat, 26 Mar 1994 01:45:19 GMT
Organization: M.I.T. Media Laboratory
> it seems I can only open about 12 files simultaneously. What do I
> need to do... to open more files than that ?
You can set that in your AUTOEXEC.BAT file.
:)
--Shawn
P.S. Do you know why you can't open more? Are you running out of
memory? Running out of pointers? Try calling MoreMasters() and/or
allocating more RAM to the program.
+++++++++++++++++++++++++++
>From devon_hubbard@taligent.com (Devon Hubbard)
Date: Fri, 25 Mar 1994 23:15:25 GMT
Organization: Taligent, Inc.
In article <lehmann-250394155007@babbage.cs.byu.edu>,
lehmann@bert.cs.byu.edu (Ralf Lehmann) wrote:
> From inside my program, it seems I can only open about 12 files
> simultaneously. What do I need to do (Toolbox call, Control
> Panel, whatever...) to open more files than that ?
>
> Thanks,
> Ralf.
Are you using ANSI lib calls or regular toolbox OS calls? If you are using
ANSI (and I'll assume for a moment MPW) then StdCLib's limit of 20 open
files at a time still isn't your problem. If you are using regular toolbox
calls you still shouldn't have a problem opening 12 files. Do you have a
ton of fonts in your system? If you are under System 7, that shouldn't be
a problem.
Can you be specific about why you can't open more than 12 files. What
error codes are you getting back, etc?
- ------------------------------------------------------------------------
Devon Hubbard Silicon Pilot
devon_hubbard@taligent.com Taligent, Inc
+++++++++++++++++++++++++++
>From Aaron Bratcher <aaron_bratcher@fpm.uchicago.edu>
Date: Sat, 26 Mar 1994 14:01:31 GMT
Organization: University of Chicago
In article <SRO.94Mar25204519@media-lab.media.mit.edu> Shawn O'Donnell, sro@media.mit.edu writes:
>You can set that in your AUTOEXEC.BAT file.
That should be the CONFIG.SYS file ;)
- ------------------------------------------------------------------------
MegaWatt | _____ _____ _____ _ _
| |__ / | ___ || ___ \ | | | |
AKA Aaron L. Bratcher | / / | |_| || |_/ / | | | |
University of Chicago | / /__ | ___ || __/ |_| |_|
aaron_bratcher@fpm.uchicago.edu | |_____||_| |_||_| (_) (_)
- ------------------------------------------------------------------------
+++++++++++++++++++++++++++
>From lehmann@bert.cs.byu.edu (Ralf Lehmann)
Date: 29 Mar 1994 17:19:44 GMT
Organization: Brigham Young University
OK, OK, here some more information about what I'm trying to do:
I use Think C 5.0, I need to use portable functions, that's why
I use open or fopen from the ANSI library. Following your
suggestions, I tried to replace the open function by the Create
function, and indeed, it worked (I aborted the program after 500
had been created... what a mess to put them in the trash can...)
So it seems that Think C's library is at fault. Why would it
limit the # of open files ? Isn't it just calling Create or FSOpen ?
Here is my little test program:
#include <stdio.h>
#include <unix.h>
#include <fcntl.h>
void main ()
{
int i;
char name[5];
for (i = 0; ; i++)
{
sprintf (name, "_t%d", i);
if (open (name, O_CREAT) == -1) break;
}
printf ("max open files: %d\n", i);
}
+++++++++++++++++++++++++++
>From leblonk@netcom.com (Marcel Blonk)
Date: Tue, 29 Mar 1994 21:59:31 GMT
Organization: NETCOM On-line Communication Services (408 241-9760 guest)
: So it seems that Think C's library is at fault. Why would it
: limit the # of open files ? Isn't it just calling Create or FSOpen ?
Under system 6, the number of open files on a mac is limited. With the
standard configuration, you would be able to open about 12 files (that
is, depending on how many other files are opened by the system and other
apps). One way to fix this is by using SuitCase, which has a power user
setting somewhere that allows you to up the max # of open files.
This I know for sure.
What I don't know for sure:
I think/seem_to_remember that under system 7 the FCB's are dynamically
allocated, so there is no longer a limit to the number of open files.
Again, I'm not sure. Are you using system 7?
Btw. I think the reason why your little test program works is because you
only create files, but you do not actually keep them open.
Marcel
+++++++++++++++++++++++++++
>From rollin@newton.apple.com (Keith Rollin)
Date: Fri, 1 Apr 1994 06:58:37 GMT
Organization: Little to none
In article <lehmann-250394155007@babbage.cs.byu.edu>,
lehmann@bert.cs.byu.edu (Ralf Lehmann) wrote:
> From inside my program, it seems I can only open about 12 files
> simultaneously. What do I need to do (Toolbox call, Control
> Panel, whatever...) to open more files than that ?
Sounds like you're using C's stdio. There's this comment thing inside of
StdIO.h that you might want to read:
/*
* The minimum number of files that a program is guaranteed to be able to
have
* open simultaneously (including the pre-opened stdin, stdout, and
stderr).
* The numbers are listed in Inside Macintosh, page IV-178, as:
* 64K ROM, 128K Macintosh 12 files
* 64K ROM, 512K Macintosh 40 files
* 128K ROM 40 files per volume
*/
#define FOPEN_MAX 12
That's from MPW. Symantec C 6.0 sets this to 15, without any comments.
How do you fix this? If you're using MPW, you'll probably have to rewrite
your program to either a) live with the limit or b) using the File Manager
calls. If you're using THINK C, you can probably just recompile the
libraries.
- --------------------------------------------------------------------------
Keith Rollin --- Phantom Programmer --- Apple Computer, Inc. --- Team
Newton
+++++++++++++++++++++++++++
>From neeri@iis.ee.ethz.ch (Matthias Neeracher)
Date: 7 Apr 94 11:02:25
Organization: Integrated Systems Laboratory, ETH, Zurich
In article <rollin-310394225838@rollin-keith.apple.com>, rollin@newton.apple.com (Keith Rollin) writes:
> In article <lehmann-250394155007@babbage.cs.byu.edu>,
> lehmann@bert.cs.byu.edu (Ralf Lehmann) wrote:
>> From inside my program, it seems I can only open about 12 files
>> simultaneously. What do I need to do (Toolbox call, Control
>> Panel, whatever...) to open more files than that ?
> Sounds like you're using C's stdio. There's this comment thing inside of
> StdIO.h that you might want to read:
>[...]
> #define FOPEN_MAX 12
> That's from MPW. Symantec C 6.0 sets this to 15, without any comments.
> How do you fix this? If you're using MPW, you'll probably have to rewrite
> your program to either a) live with the limit or b) using the File Manager
> calls.
Alternatively, you can do the following, at least with MPW 3.2 and MPW 3.3:
/* Allocate more stdio buffers */
FILE _iob[64] = {
0, nil, nil, nil, 0, _IOREAD, 0,
0, nil, nil, nil, 0, _IOWRT, 1,
0, nil, nil, nil, 0, _IOWRT+_IOLBF, 2
};
FILE * _lastbuf = _iob + 64;
The Linker will warn you, forgive him if you know what you're doing :-)
Matthias
- ---
Matthias Neeracher neeri@iis.ee.ethz.ch
"And that's why I am going to turn this world upside down, and make
of it a fire so *bright* that someone real will notice"
-- Vernor Vinge, _Tatja Grimm's World_
---------------------------
>From west@augsburg.edu (James West)
Subject: Proper QT PICT creation?
Date: 31 Mar 1994 20:59:20 GMT
Organization: Augsburg College
I am trying to create a custom interface for a digital camera that
downloads a JPEG (or JFIF) image via the serial port. So far, it is set up
so that an appleevent triggers the camera to snap a photo, and another
appleevent orders the camera to download the image. So far so good.
My challenge is to convert the photo to a QT PICT. Right now I have had
some success by canabalizing existing JPEG PICT's and pasting the opcodes
onto the JFIF data. I realize this is very bad technique, and would like to
be able to do this in a proper fashion.
I understand the basic process for creating a PICT file containing a
compressed image, but I am somewhat confused when it comes to the
imagedesc(?) structure that needs to be passed with the decompressImage
funtion. Since quicktime did not compress this image (which is usually when
the imagedesc is created), what do I use for this value? Can I steal a
imagedesc from an existing JPEG PICT and use that after some tweaking to my
specifications (height and width, ect.)? This option seems to kind of make
me a cannibal again. Are there published standards for creating this
structure?
I would also love to have this QT PICT version of this image pasted onto
the clipboard for further use. Is this supported and is there any way this
could be done with my image grabbing app in the background?
ANY pointers and/or kicks in the side of the head are welcome. Thanks
--
James West ***** I like Cacti... ****
Augsburg College Graphic Center
731 21st Ave S
Mpls. MN 55454
west@augsburg.edu ******** OUTCH!! ********
+++++++++++++++++++++++++++
>From markhanrek@aol.com (MarkHanrek)
Date: 1 Apr 1994 13:31:04 -0500
Organization: America Online, Inc. (1-800-827-6364)
On the QuickTime CD, there is source code for taking a standard JFIF file, and
feeding it to one of the Quicktime routines, FDecompress I believe, so that you
end up with a normal everyday PixMap of the image.
( Note that the resulting image quality is not as good as is obtainable with
the standard JPEG decompression routines available from the Independent JPEG
Group (uunet.uu.net) . This may change with the impending release of QuickTime
2.0 ).
At this point, you have a straight pixmap of your image, and the following
"intermediate" steps have nothing to do with QuickTime, or JPEG.
You have a PixMap of the image, and you can easily turn it into a Macintosh
picture using the standard method of opening a new picture and copybitsing the
image to itself, and closing the picture, yielding a picture.
You can save this picture to the clipboard, draw it to the screen, or write it
to a PICT file.
To put it on disk as a QT Compressed PICT, you use additional functions found
in the QuickTime toolkit to compress the pixmap and write out a QT compressed
file.
If at all possible, you really do want try to stand on the shoulders of the
routines provided along with the QuickTime CD's example source code.
I have done a wide variety of things in this regard, and I couldn't answer your
question about ImageDescriptors, most likely because I took the example source
code and treated it as a black box, and have never had to deal with knowing
these details, thank god! :)
See if you can't get a hold of the stuff on the QuickTime Developer's Toolkit
CD. ( or whatever it is called exactly ).
Hope this helps.
Mark Hanrek
+++++++++++++++++++++++++++
>From Steve Bryan <sbryan@maroon.tc.umn.edu>
Date: Sat, 2 Apr 1994 05:14:22 GMT
Organization: Sexton Software
In article <west-310394144925@141.224.192.172> James West,
west@augsburg.edu writes:
>I understand the basic process for creating a PICT file containing a
>compressed image, but I am somewhat confused when it comes to the
>imagedesc(?) structure that needs to be passed with the decompressImage
>funtion. Since quicktime did not compress this image (which is usually
when
>the imagedesc is created), what do I use for this value? Can I steal a
>imagedesc from an existing JPEG PICT and use that after some tweaking to
my
>specifications (height and width, ect.)? This option seems to kind of
make
>me a cannibal again. Are there published standards for creating this
>structure?
You're probably already aware of it but just in case (and for others)
there is significant discussion of this topic in Inside Macintosh:
QuickTime starting on page 3-24. A good (the best?) general reference for
JPEG is "JPEG Still Image Data Compression Standard" by Pennebaker and
Mitchell from Van Nostrand (ISBN 0-442-01272-1). If you're looking for
the book in Minneapolis try Borders Books at Hennepin & Lake, they have
it in stock.
Steve Bryan InterNet: sbryan@maroon.tc.umn.edu
Sexton Software CompuServe: 76545,527
Minneapolis, MN Fax: (612) 929-1799
+++++++++++++++++++++++++++
>From ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University)
Date: 5 Apr 94 12:40:49 +1300
Organization: University of Waikato, Hamilton, New Zealand
In article <2nhp98$8am@search01.news.aol.com>, markhanrek@aol.com (MarkHanrek) writes:
> On the QuickTime CD, there is source code for taking a standard JFIF file, and
> feeding it to one of the Quicktime routines, FDecompress I believe, so that you
> end up with a normal everyday PixMap of the image.
>
...
>
> You have a PixMap of the image, and you can easily turn it into a Macintosh
> picture using the standard method of opening a new picture and copybitsing the
> image to itself, and closing the picture, yielding a picture.
>
> You can save this picture to the clipboard, draw it to the screen, or write it
> to a PICT file.
>
> To put it on disk as a QT Compressed PICT, you use additional functions found
> in the QuickTime toolkit to compress the pixmap and write out a QT compressed
> file.
Note that the decompress calls are drawing calls. This means that, if you have
a QuickDraw picture open, the _compressed_ data will be recorded directly in
the picture. This is better than decompressing the data into a PixMap, and
then recompressing it, with the consequent loss of even more image quality.
I do actually have some code somewhere that fakes an ImageDescription structure
for a JPEG image. I think it still works. :-)
Lawrence D'Oliveiro fone: +64-7-856-2889
Info & Tech Services Division fax: +64-7-838-4066
University of Waikato electric mail: ldo@waikato.ac.nz
Hamilton, New Zealand 37^ 47' 26" S, 175^ 19' 7" E, GMT+12:00
+++++++++++++++++++++++++++
>From west@augsburg.edu (James West)
Date: 5 Apr 1994 16:57:28 GMT
Organization: Augsburg College
Great replies- thanks folks! Here's where I'm at...
> Note that the decompress calls are drawing calls. This means that, if you have
> a QuickDraw picture open, the _compressed_ data will be recorded directly in
> the picture. This is better than decompressing the data into a PixMap, and
> then recompressing it, with the consequent loss of even more image quality.
>
> I do actually have some code somewhere that fakes an ImageDescription structure
> for a JPEG image. I think it still works. :-)
I did end up going this route, because I did want the data to be compressed
and avoid the data loss of recompression. The ImageDescription that I
created also seems to work fine for the DecompressImage call recorded to a
picture. I don't think there should be a problem using this option in this
application, since the resolution and depth of my JPEG data from this
camera will always be constant.
My only problem now is trying to get the picture pasted to the clipboard
when this application is running in the background. Works fine when it's a
foreground app, but while backgrounding it either silently fails to get the
picture onto the scrap, or drops into MacsBug (but that may be another
problem :-( ).
--
James West ***** I like Cacti... ****
Augsburg College Graphic Center
731 21st Ave S
Mpls. MN 55454
west@augsburg.edu ******** OUTCH!! ********
+++++++++++++++++++++++++++
>From ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University)
Date: 7 Apr 94 11:34:24 +1300
Organization: University of Waikato, Hamilton, New Zealand
In article <1994Apr5.124049.27222@waikato.ac.nz>, I said:
>
> Note that the decompress calls are drawing calls. This means that, if you have
> a QuickDraw picture open, the _compressed_ data will be recorded directly in
> the picture. This is better than decompressing the data into a PixMap, and
> then recompressing it, with the consequent loss of even more image quality.
>
> I do actually have some code somewhere that fakes an ImageDescription structure
> for a JPEG image. I think it still works. :-)
OK, here are some relevant extracts from a quick-and-dirty tool I wrote a
couple of years ago for turning JPEG files into PICT files. I discovered very
little of this information myself: in particular, Dolf Starreveld at Storm
Technologies was kind enough to tell me enough about JPEG and JFIF formats to
make this work.
Note: "JpegData" points to a buffer containing the contents of the JPEG
file. The number of bytes is in "JpegDataSize". First you need to scan this,
looking for the bounds of the image. You don't really need the whole file for
this: the information should be present somewhere within the first 1K:
PROCEDURE FindPictureSize;
(* scans the JPEG data, looking for the information about
the dimensions of the image. *)
VAR
NextByte, DataEnd : ADDRESS;
TwoBytes :
RECORD
CASE : CARDINAL OF
| 1:
HighByte, LowByte : BYTE;
| 2:
SignedWord : INTEGER
END (*CASE*)
END (*RECORD*);
Msg, TempStr : Str255;
BEGIN
NextByte := JpegData;
DataEnd := JpegData + JpegDataSize;
LOOP
IF NextByte = DataEnd THEN
ErrorLiteral('couldnUt determine JPEG image bounds', ProcessingError);
EXIT
END (*IF*);
IF ORD(NextByte^) = 0FFH THEN
INC(NextByte);
IF NextByte = DataEnd THEN
ErrorLiteral('malformed JPEG file', ProcessingError);
EXIT
END (*IF*);
IF ORD(NextByte^) = 0C0H THEN
INC(NextByte);
IF DataEnd - NextByte >= 7 THEN
NextByte := NextByte + 3;
TwoBytes.HighByte := NextByte^;
INC(NextByte);
TwoBytes.LowByte := NextByte^;
INC(NextByte);
PictureSize.v := TwoBytes.SignedWord;
TwoBytes.HighByte := NextByte^;
INC(NextByte);
TwoBytes.LowByte := NextByte^;
INC(NextByte);
PictureSize.h := TwoBytes.SignedWord;
MakeCounted('Image size (h, v) = (', Msg);
NumToString(PictureSize.h, TempStr);
AppendCounted(ADR(TempStr), Msg);
AppendtoCounted(', ', Msg);
NumToString(PictureSize.v, TempStr);
AppendCounted(ADR(TempStr), Msg);
AppendtoCounted(')', Msg);
ErrorString(Msg, Success);
EXIT
ELSE
ErrorLiteral('malformed bounds info', ProcessingError);
EXIT
END (*IF*)
END (*IF*)
ELSE
INC(NextByte)
END (*IF*)
END (*LOOP*)
END FindPictureSize;
Then, you build the fake ImageDescription and record the data into a
picture:
PROCEDURE BuildPicture;
VAR
Description : ImageDescriptionHandle;
PictureBounds : Rect;
TempPort : CGrafPort;
BEGIN (*BuildPicture*)
Description := NewHandle(SIZE(ImageDescription));
Description^^.idSize := SIZE(ImageDescription);
Description^^.cType := 06A706567H (* 'jpeg' *);
Description^^.resvd1 := 0;
Description^^.resvd2 := 0;
Description^^.dataRefIndex := 0;
Description^^.version := 0;
Description^^.revisionLevel := 0;
Description^^.vendor := 06170706CH (* 'appl' *);
Description^^.temporalQuality := ImageCompression.codecMinQuality;
Description^^.spatialQuality := ImageCompression.codecNormalQuality; (* is this significant? *)
Description^^.width := PictureSize.h;
Description^^.height := PictureSize.v;
Description^^.hRes := FixRatio(72, 1);
Description^^.vRes := FixRatio(72, 1);
Description^^.dataSize := JpegDataSize;
Description^^.frameCount := 1;
Description^^.name[0] := 0C;
Description^^.depth := 32; (* I hope! *)
Description^^.clutID := -1;
OpenCPortVar(TempPort);
PictureBounds.top := 0;
PictureBounds.left := 0;
PictureBounds.botRight := PictureSize;
ClipRect(PictureBounds);
Picture := OpenPicture(PictureBounds);
Err := DecompressImage
(
(*data :=*) JpegData,
(*desc :=*) Description,
(*dst :=*) TempPort.portPixMap,
(*srcRect :=*) ADR(PictureBounds),
(*@dstRect :=*) PictureBounds,
(*mode :=*) QuickDraw.ditherCopy,
(*mask :=*) NIL
);
ClosePicture;
IF Err <> noErr THEN
OSError(Err)
END (*IF*);
CloseCPortVar(TempPort);
DisposeHandle(Description)
END BuildPicture;
Hope that helps.
Lawrence D'Oliveiro fone: +64-7-856-2889
Info & Tech Services Division fax: +64-7-838-4066
University of Waikato electric mail: ldo@waikato.ac.nz
Hamilton, New Zealand 37^ 47' 26" S, 175^ 19' 7" E, GMT+12:00
---------------------------
>From heilei@colossus.cs.hut.fi (Heikki Leinonen)
Subject: Q: Changing font & size of dialog items
Date: 31 Mar 1994 13:18:34 GMT
Organization: Helsinki University of Technology, Finland
Greetings from the depths of Dialog Manager
(possible FAQ alert...)
So I make my DLOGs and DITLs with ResEdit, call GetNewDialog
and ModalDialog in my program and so on. And then comes the
tough part: is there a SIMPLE way to make *all* the texts
(meaning static and edit texts, button and check box titles etc.)
in my dialog something else than Chicago 12? SetDAFont seems
to handle only the font name, not the size. And it won't
change the controls. If I created the controls myself, I could
add the useWFont constant to controls' definition values. But
making the layout with ResEdit is SOOOOO easy...
Anyone have any bright ideas on this one?
Heikki Leinonen
heilei@otax.tky.hut.fi
Helsinki University of Technology
Finland
+++++++++++++++++++++++++++
>From resnick@cogsci.uiuc.edu (Pete Resnick)
Date: Thu, 31 Mar 1994 12:06:05 -0600
Organization: University of Illinois at Urbana-Champaign
In article <2neija$i2@nntp.hut.fi>, heilei@colossus.cs.hut.fi (Heikki
Leinonen) wrote:
> So I make my DLOGs and DITLs with ResEdit, call GetNewDialog
> and ModalDialog in my program and so on. And then comes the
> tough part: is there a SIMPLE way to make *all* the texts
> (meaning static and edit texts, button and check box titles etc.)
> in my dialog something else than Chicago 12?
You need to create an ictb resource. Unfortunately, ResEdit does not have
an ictb editor. Resourserer (sp?) is able to create them, or you can use
Rez.
pr
--
Pete Resnick (...so what is a mojo, and why would one be rising?)
Graduate assistant - Philosophy Department, Gregory Hall, UIUC
System manager - Cognitive Science Group, Beckman Institute, UIUC
Internet: resnick@cogsci.uiuc.edu
+++++++++++++++++++++++++++
>From Vampire@crypt.demon.co.uk (Vampire)
Date: Fri, 1 Apr 1994 00:41:37 GMT
Organization: Pennangalan Software
In article <2neija$i2@nntp.hut.fi> heilei@colossus.cs.hut.fi (Heikki Leinonen)
writes:
> tough part: is there a SIMPLE way to make *all* the texts
> (meaning static and edit texts, button and check box titles etc.)
> in my dialog something else than Chicago 12? SetDAFont seems
> to handle only the font name, not the size. And it won't
> change the controls.
All objects in a Dialog box use the font of the Dialog's GrafPort. SetDAFont()
changes a global setting for the font to use in ALL subsequent Dialog Manager
Windows.
What you need to do is set the font and textsize of the GrafPort directly. The
way to do this is with the QuickDraw calls TextFont() and TextSize() [See IM
Vol 1 - p171]. These routines affect the ~current~ port, so you'll need to do
something like this...
[C Code]
DialogPtr pMyDialog = GetNewDialog(blah blah blah);
GetPort(&SavePort);
SetPort(pMyDialog);
TextFont(rhubarb);
Textsize(baloney);
SetPort(SavePort);
ShowWindow(pMyDialog);
You need the code to save and restore the current grafport, as the Dialog
Manager normally does this for you, so it is probably missing from any code you
have written (DialogSelect() and ModalDialog() handle the grafports
automatically).
The above ~should~ work...I ~think~ it does for me, but I haven't written
anything recently that used it...
PS. If you only ant to change the text of editText items, you can do it by
directly modifying the contents of the Dialog's TERec structure...you can get
this by casting your DialogPtr to type DialogPeek, and dereferencing it as
follows:
TEHandle myDialogText = ((DialogPeek) pMyDialog)->textH; [IM Vol 1, p408]
Best of luck...
=============================================================================
|"If I knock on your door, you're a fool;
VAMPIRE | if you invite me in, you're a dead fool"
(Pennangalan Software) | My dust resides @crypt.demon.co.uk
=============================================================================
+++++++++++++++++++++++++++
>From t-gaul@i-link.com (Troy Gaul)
Date: Fri, 01 Apr 1994 14:04:27 -0600
Organization: I-Link, Ltd.
In article <84@crypt.demon.co.uk>, Vampire@crypt.demon.co.uk (Vampire)
wrote:
> In article <2neija$i2@nntp.hut.fi> heilei@colossus.cs.hut.fi (Heikki Leinonen)
> writes:
> > tough part: is there a SIMPLE way to make *all* the texts
> > (meaning static and edit texts, button and check box titles etc.)
> > in my dialog something else than Chicago 12? SetDAFont seems
> > to handle only the font name, not the size. And it won't
> > change the controls.
>
> All objects in a Dialog box use the font of the Dialog's GrafPort. SetDAFont()
> changes a global setting for the font to use in ALL subsequent Dialog Manager
> Windows.
>
> What you need to do is set the font and textsize of the GrafPort directly. The
> way to do this is with the QuickDraw calls TextFont() and TextSize() [See IM
> Vol 1 - p171]. These routines affect the ~current~ port, so you'll need to do
> something like this...
>
> [C Code]
> DialogPtr pMyDialog = GetNewDialog(blah blah blah);
>
> GetPort(&SavePort);
> SetPort(pMyDialog);
> TextFont(rhubarb);
> Textsize(baloney);
> SetPort(SavePort);
> ShowWindow(pMyDialog);
Actually, that will only change the Static and Edit text items, not the
controls (like buttons and checkboxes) in the dialog. The only way that I
know of to change the font/size in the controls is to use CNTL resources
for each of those items and set the flag that tells the controls to use the
window's font. (Note however that you must still change the port's
font/size for this to work.)
_troy
//////// //////___Troy Gaul_________________________t-gaul@i-link.com__ //
// // I-Link, Ltd. ; West Des Moines, Iowa //
// // // "Iungo ergo sum." (I-Link, therefore I am.) //
// //////________________________________________________________ //
+++++++++++++++++++++++++++
>From resnick@cogsci.uiuc.edu (Pete Resnick)
Date: Fri, 01 Apr 1994 15:03:21 -0600
Organization: University of Illinois at Urbana-Champaign
In article <84@crypt.demon.co.uk>, Vampire@crypt.demon.co.uk (Vampire) wrote:
>All objects in a Dialog box use the font of the Dialog's GrafPort.
Not if you use an ictb resource.
pr
--
Pete Resnick (...so what is a mojo, and why would one be rising?)
Graduate assistant - Philosophy Department, Gregory Hall, UIUC
System manager - Cognitive Science Group, Beckman Institute, UIUC
Internet: resnick@cogsci.uiuc.edu
+++++++++++++++++++++++++++
>From dnewman@emx.cc.utexas.edu (David Newman)
Date: 1 Apr 1994 14:28:53 -0600
Organization: The University of Texas - Austin
In addition to what has been mentioned earlier, I was doing this the other
day, and I discovered an additional twist that noone has mentioned. If your
dialog includes an editable text box, you must set the text of that box to
the same text as the buttons (that is, the textFont must be the same for the
grafPort and for the TErec), otherwise, textedit will reset the font for the
grafPort.
Someone can correct me if they *know* better, since I'm a novice at such
things, but that was my diagnosis of the problem, and since I corrected
it, things work great.
>>Dave
P.S. Thanks to Leonard Rosenthal for pointing me in the right direction
when I had this problem, otherwise I wouldn't be able to answer.
+++++++++++++++++++++++++++
>From askwersk@athena.mit.edu (Adam Skwersky)
Date: 1 Apr 1994 19:39:36 GMT
Organization: Massachvsetts Institvte of Technology
In article <2neija$i2@nntp.hut.fi>, heilei@colossus.cs.hut.fi (Heikki
Leinonen) wrote:
>. If I created the controls myself, I could
> add the useWFont constant to controls' definition values. But
> making the layout with ResEdit is SOOOOO easy...
>
> Anyone have any bright ideas on this one?
I have had a similar problem. I was trying to use the custom Connection
Manager
Setup routines that add DITL's to your dialog and you use the DITL's to
setup up a certain tool. The items are all SUPPOSED to be in geneva 9, and
when you call the toolbox command CMChoose() thats what you get. However
if I were to add the DITL's to my OWN dialog, they all come out in
Chicago 12. I thought about trying to go through each dialog item and
changing its procID to procID+useWFont, but I could not even find the
procID field in the ControlHandle record! I'm really lost with this as
well,
and I do not think it is a FAQ. Do any Mac gurus out there know how to go
through a bunch of controls (dialog items) and change their fonts and
sizes?
Adam Skwersky
askwersk@mit.edu
adams@media.mit.edu
+++++++++++++++++++++++++++
>From hrodstein@aol.com (HRodstein)
Date: 2 Apr 1994 01:09:03 -0500
Organization: America Online, Inc. (1-800-827-6364)
I asked this question of Apple developer support a couple of months
ago. They told me I should use an ictb resource. This is documented
on page 279 of Inside Mac V. There are two problems.
First, neither ResEdit nor Rez know how to make ictb resources.
Resourcer does know how to make it so you would either need
to hack it in hex or buy Resourcer.
Second, it will not work on machines without color QuickDraw
such as Mac Plus under System 6.
The technique of setting the font and text size of both the
dialog's grafPort and setting the font and text size of the
dialog's TextEdit record also seems to work if you want
to change editText and statText items only.
Howard Rodstein
+++++++++++++++++++++++++++
>From RobTerrell@aol.com (Rob Terrell)
Date: 4 Apr 1994 17:28:45 GMT
Organization: Jecta Development Corp.
In article <2nj25v$gfi@search01.news.aol.com>
hrodstein@aol.com (HRodstein) writes:
> First, neither ResEdit nor Rez know how to make ictb resources.
> Resourcer does know how to make it so you would either need
> to hack it in hex or buy Resourcer.
I remember when I had to make these by hand a few years back...that was
no fun. So the real answer is...we need someone to cough up a ResEdit
'ictb' editor.
Does anyone have such a beast they would be willing to contribute to
sumex?
Rob
+++++++++++++++++++++++++++
>From Jens Alfke <jens_alfke@powertalk.apple.com>
Date: Thu, 7 Apr 1994 01:15:49 GMT
Organization: Apple Computer
Heikki Leinonen, heilei@colossus.cs.hut.fi writes:
> is there a SIMPLE way to make *all* the texts
> (meaning static and edit texts, button and check box titles etc.)
> in my dialog something else than Chicago 12?
As has been said, you can use an 'ictb' resource. Unfortunately (maybe) these
aren't recognized on 68000 systems so if your program is supposed to run on
old hardware you can't use them.
One alternative thing I've done is to set the "useWFont" bit of the
variationCodes of the control items; this makes their text appear in the
current grafPort's font/size/style instead of the system font. Unfortunately,
to do this you have to temporarily patch NewControl during your call to
GetNewDialog, and in the patch set the appropriate bit in the variationCode
before calling the old trap address. It's a wee bit ugly but works fine.
Another solution is simply not using the Dialog Manager. This is really
feasible only if you have a framework (MacApp, TCL, PowerPlant...) that will
let you set up complex windows easily. I did this approach for the
AppleScript Script Editor, with a hand-rolled framework. It works great, but
the overhead is a bit high for a small app.
--Jens Alfke
jens_alfke@powertalk Rebel girl, rebel girl,
.apple.com Rebel girl you are the queen of my world
+++++++++++++++++++++++++++
>From tomcat@email.teaser.com ( Florent Pillet)
Date: Thu, 7 Apr 1994 13:10:40 GMT
Organization: France-Teaser
References: <askwersk-010494155542@el-2.media.mit.edu>
askwersk@athena.mit.edu (Adam Skwersky) writes:
> In article <2neija$i2@nntp.hut.fi>, heilei@colossus.cs.hut.fi (Heikki
> Leinonen) wrote:
>
> >. If I created the controls myself, I could
> > add the useWFont constant to controls' definition values. But
> > making the layout with ResEdit is SOOOOO easy...
> >
> > Anyone have any bright ideas on this one?
>
>
> I have had a similar problem. I was trying to use the custom Connection
> Manager
> Setup routines that add DITL's to your dialog and you use the DITL's to
> setup up a certain tool. The items are all SUPPOSED to be in geneva 9, and
> when you call the toolbox command CMChoose() thats what you get. However
> if I were to add the DITL's to my OWN dialog, they all come out in
> Chicago 12. I thought about trying to go through each dialog item and
> changing its procID to procID+useWFont, but I could not even find the
> procID field in the ControlHandle record! I'm really lost with this as
> well,
> and I do not think it is a FAQ. Do any Mac gurus out there know how to go
> through a bunch of controls (dialog items) and change their fonts and
> sizes?
>
> Adam Skwersky
> askwersk@mit.edu
> adams@media.mit.edu
I have EXACTLY the same problem and I'm managing to setup my custom
connection manager setup dialog box.
Well, it mostly works. I followed the example given in "IM: CTB", but
before doing any update in the CTB part of the dialog box, or before
calling any CTB function, I call a function of mine, which uses the
Script Manager to set the current font attributes. It works for
the control texts but not for the static or edit texts. The only
way I've found to set the static & edit text font is to modify
the SysFontFam & SysFontSiz low-memory variables but this is dirty
and it also affects the menu bar (sometimes) and other window's title
bar (always).
Here is the function I use to set everything up before calling the
connection manager:
static void SetCTBToolEnv(dialogInfoPtr infoP,DialogPtr theDialog)
{
short script;
unsigned long fnt;
UseResFile(0);
SetPort((GrafPtr)theDialog);
fnt = ((long)geneva << 16L) | 9L;
script = FontScript();
SetScriptVariable(script,smScriptMonoFondSize,fnt);
SetScriptVariable(script,smScriptPrefFondSize,fnt);
SetScriptVariable(script,smScriptSmallFondSize,fnt);
SetScriptVariable(script,smScriptSysFondSize,fnt);
SetScriptVariable(script,smScriptAppFondSize,fnt);
TextFont(geneva);
TextSize(9);
}
Well, this is a hack but it works. I still have to find how setup the
Edit & Static Text font so it affects only my window.
Anyway, those f****g bastards at Apple who have designed the CTB and
implemented it should be thrown on a desert island. I can't imagine how
they could do such a bad design and I don't understand why they decided
to document only the easiest-to-use parts of their tools.
Apple often makes beautiful software. This one was an exception. Ugly.
Hope the code helps,
Florent.
--
Florent Pillet, freelance programmer. ____/|
Location: Paris, France. \ o O|
E-Mail: tomcat@email.teaser.com =(_T_)=
U
+++++++++++++++++++++++++++
>From saseew@router.unx.sas.com (Ed Walker)
Date: Thu, 7 Apr 1994 13:31:45 GMT
Organization: SAS Institute Inc.
In article <1994Apr7.011549.21208@gallant.apple.com>, Jens Alfke <jens_alfke@powertalk.apple.com> writes:
>Heikki Leinonen, heilei@colossus.cs.hut.fi writes:
>> is there a SIMPLE way to make *all* the texts
>> (meaning static and edit texts, button and check box titles etc.)
>> in my dialog something else than Chicago 12?
>
stuff deleted
>
>--Jens Alfke
> jens_alfke@powertalk Rebel girl, rebel girl,
> .apple.com Rebel girl you are the queen of my world
One thing that works for me is SetDAFont(n) before opening the dialog.
This only changes the font for static and edit text. Once your
dialog is open you can use SetDAFont(0) to restore the system font
for your other dialogs (like alerts) and it won't affect the opened
dialogs.
Ed >'<
(o o)
+---------------------------------------------o0o-U-o0o---------------+
| EdWalker@aol.com (home) | It is impossible to make anything |
| saseew@sas.mvs.com (work) | foolproof; fools are so ingenious. |
+---------------------------------------------oo0---0oo---------------+
+++++++++++++++++++++++++++
>From d88-jwa@hemul.nada.kth.se (Jon W‰tte)
Date: 7 Apr 1994 14:30:59 GMT
Organization: The Royal Institute of Technology
In <i7e3f.n3.t1ad56e60@email.teaser.com> tomcat@email.teaser.com ( Florent Pillet) writes:
> Anyway, those f****g bastards at Apple who have designed the CTB and
> implemented it should be thrown on a desert island. I can't imagine how
> they could do such a bad design and I don't understand why they decided
> to document only the easiest-to-use parts of their tools.
That obviously stands for your opinion, but I feel this is a rather
wonderful part of system software, and it solves a whole class of
problems which ANY other operating system simply ignores (at worst)
or doesn't really have any coherent support for (at best)
You are of course welcome to write your own code, but using such
language about Apple engineers will not improve your standing in
this newsgroup.
PS: There has been rumors about the CTB dying, but when I checked
with DTS, it seems those rumors are false. The CTB will not disappear
from the OS for the forseeable future, and it will "at some point in
time" "probably" become native; it's just no sense in doing so now,
since there are no native tools and the context switches would just
kill it.
--
-- Jon W{tte, h+@nada.kth.se, Mac Hacker Deluxe --
"After I first used the Mac, I had a dream in which I would walk up to
people, touch them, and they'd turn black. Then I could talk to them."
-- Anon
---------------------------
>From hagst3+@pitt.edu (Herschel A Gelman)
Subject: Removing PowerPC code from a fat binary
Date: 1 Apr 94 22:15:40 GMT
Organization: University of Pittsburgh
Well, the subject line says most of it. Is there an easy way to do this? I'd
rather have the 680x0 code only, rather than waste already minimal hard drive
space.
I grabbed the fat version of JPEGView, and it seems like the 601 code is all in
the data fork. Weird. An older version I found had nothing in the data fork,
so it seems safe to just cut that out. Which I haven't gotten around to doing
yet. (I assume I'd have to change it to type text, then go in with a word
processor and select-all and delete -- is there an easier way??)
Is there anything in the resource fork? How would a program distinguish
between data and PowerPC code, and how would I distinguish if I'm trying to
shorten the program like this?
I'd prefer E-mail responses... gracias..
--
- -------------- Herschel Gelman ----------- hagst3+@pitt.edu -----------------
+++++++++++++++++++++++++++
>From d88-jwa@mumrik.nada.kth.se (Jon W‰tte)
Date: 2 Apr 1994 08:01:04 GMT
Organization: The Royal Institute of Technology
In <18996@blue.cis.pitt.edu> hagst3+@pitt.edu (Herschel A Gelman) writes:
>Well, the subject line says most of it. Is there an easy way to do this? I'd
>rather have the 680x0 code only, rather than waste already minimal hard drive
>space.
1) Set the data fork length to 0 bytes
2) Remove the cfrg resource
Done.
--
-- Jon W{tte, h+@nada.kth.se, Mac Hacker Deluxe --
"It was, in fact, cool as all get-out. Fortunately it was a little
too late (historically speaking) to be groovy."
-- Dennis Pelton
+++++++++++++++++++++++++++
>From jackl@netcom.com (Jack Littleton)
Date: Mon, 4 Apr 1994 15:31:35 GMT
Organization: Law Offices of Buttafuoco, Bobbit and Harding
Jon W‰tte (d88-jwa@mumrik.nada.kth.se) wrote:
: 1) Set the data fork length to 0 bytes
: 2) Remove the cfrg resource
: Done.
To be really safe, I'd check the offset field of the cfrg resource before
doing this. It is still possible, although not recommended, to store data
in the data fork of a fat binary. The offset field in the cfrg tells the
CFM where the actual code starts (or other code fragments start). If the
offset is zero, as it is for most apps I've seen, go ahead and zap the
data fork.
--
Jack Littleton jackl@netcom.com
PowerPC and/or 68k Debugger Engineer Apple Computer, Inc.
(WARNING: Above title can change suddenly and without warning)
### This, and all other posts generated by myself, are in no ###
### way meant to be an official view of Apple Computer, Inc. ###
+++++++++++++++++++++++++++
>From jwbaxter@olympus.net (John W. Baxter)
Date: Mon, 04 Apr 1994 11:02:42 -0700
Organization: Internet for the Olympic Peninsula
In article <jacklCnqr4p.885@netcom.com>, jackl@netcom.com (Jack Littleton)
wrote:
> Jon Wtte (d88-jwa@mumrik.nada.kth.se) wrote:
> : 1) Set the data fork length to 0 bytes
> : 2) Remove the cfrg resource
>
> : Done.
>
> To be really safe, I'd check the offset field of the cfrg resource before
> doing this. It is still possible, although not recommended, to store data
> in the data fork of a fat binary. The offset field in the cfrg tells the
> CFM where the actual code starts (or other code fragments start). If the
> offset is zero, as it is for most apps I've seen, go ahead and zap the
> data fork.
If you're going to go to the trouble of checking the offset field, also
check the length field...the fragment can be at offset zero with other
stuff after it. If the length field is zero (kWholeFork, or some name like
that...fancy for 0), THEN the data fork is all [one] application fragment.
Or...try it "blind" and see whether the application objects. [It may even
be worth it with JPEGView (the app in the original question): almost 300K
out of the about 775K file is data fork.]
--
John Baxter Port Ludlow, WA, USA [West shore, Puget Sound]
jwbaxter@pt.olympus.net
+++++++++++++++++++++++++++
>From macguru@halcyon.com. (Allan Foster)
Date: 4 Apr 1994 21:26:40 GMT
Organization: Guru Inc
In article <jwbaxter-040494110242@ptpm004.olympus.net>
jwbaxter@olympus.net (John W. Baxter) writes:
> In article <jacklCnqr4p.885@netcom.com>, jackl@netcom.com (Jack Littleton)
> wrote:
>
> > Jon Wtte (d88-jwa@mumrik.nada.kth.se) wrote:
> > : 1) Set the data fork length to 0 bytes
> > : 2) Remove the cfrg resource
> >
> > : Done.
> >
> > To be really safe, I'd check the offset field of the cfrg resource before
> > doing this. It is still possible, although not recommended, to store data
> > in the data fork of a fat binary. The offset field in the cfrg tells the
> > CFM where the actual code starts (or other code fragments start). If the
> > offset is zero, as it is for most apps I've seen, go ahead and zap the
> > data fork.
>
> If you're going to go to the trouble of checking the offset field, also
> check the length field...the fragment can be at offset zero with other
> stuff after it. If the length field is zero (kWholeFork, or some name like
> that...fancy for 0), THEN the data fork is all [one] application fragment.
>
> Or...try it "blind" and see whether the application objects. [It may even
> be worth it with JPEGView (the app in the original question): almost 300K
> out of the about 775K file is data fork.]
> --
If you REALLY want to do the right thing, then you may want to look to
see if there are any other cfrg resources in the resource fork. Since
there is nothing stopping anyone from having MULTIPLE containers in the
data fork, you may have to update the other cfrg resources if you
delete stuff.....
And nothing says it has to start at 0 either!
- --------------------------------------------------------
I am responsible for what I say and do. -- Allan Foster --
+++++++++++++++++++++++++++
>From troy@i-link.com (Troy Gaul)
Date: 4 Apr 1994 23:43:30 -0500
Organization: I-Link, Ltd., Des Moines, IA, USA - 515/255-2754
In article <2nq0mg$t31@nwfocus.wa.com>,
Allan Foster <macguru@halcyon.com.> wrote:
>In article <jwbaxter-040494110242@ptpm004.olympus.net>
>jwbaxter@olympus.net (John W. Baxter) writes:
>
>> In article <jacklCnqr4p.885@netcom.com>, jackl@netcom.com (Jack Littleton)
>> wrote:
>>
>> > Jon Wtte (d88-jwa@mumrik.nada.kth.se) wrote:
>> > : 1) Set the data fork length to 0 bytes
>> > : 2) Remove the cfrg resource
>> >
>> > : Done.
>> >
>> > To be really safe, I'd check the offset field of the cfrg resource before
>> > doing this. It is still possible, although not recommended, to store data
>> > in the data fork of a fat binary. The offset field in the cfrg tells the
>> > CFM where the actual code starts (or other code fragments start). If the
>> > offset is zero, as it is for most apps I've seen, go ahead and zap the
>> > data fork.
>>
>> If you're going to go to the trouble of checking the offset field, also
>> check the length field...the fragment can be at offset zero with other
>> stuff after it. If the length field is zero (kWholeFork, or some name like
>> that...fancy for 0), THEN the data fork is all [one] application fragment.
>>
>> Or...try it "blind" and see whether the application objects. [It may even
>> be worth it with JPEGView (the app in the original question): almost 300K
>> out of the about 775K file is data fork.]
>> --
>
>If you REALLY want to do the right thing, then you may want to look to
>see if there are any other cfrg resources in the resource fork. Since
>there is nothing stopping anyone from having MULTIPLE containers in the
>data fork, you may have to update the other cfrg resources if you
>delete stuff.....
There shouldn't be more than one 'cfrg' resource. Only the one with ID 0
is looked at, but it can describe multiple code fragments.
You would also want to check the code's type, as it might not be for the
PowerPC ('pwpc'). It could (in the future) be for the 68K or
theoretically some other processor.
Theoretically, there can be data after code, multiple codes (multiple
fragments for one processor or fragments for different processors -- or
both), and there could even be multiple datas interspersed between codes.
_troy
--
//////// ////// Troy Gaul t-gaul@i-link.com //
// // I-Link, Ltd. //
// // // "Iungo ergo sum." (I-Link, therefore I am.) //
// ////// __________________________________________________________ //
+++++++++++++++++++++++++++
>From johnson@wrs.com (David Johnson)
Date: Fri, 8 Apr 1994 01:35:09 GMT
Organization: Wind River Systems, Inc.
jackl@netcom.com (Jack Littleton) writes:
>Jon W‰tte (d88-jwa@mumrik.nada.kth.se) wrote:
>: 1) Set the data fork length to 0 bytes
>: 2) Remove the cfrg resource
>: Done.
>To be really safe, I'd check the offset field of the cfrg resource before
>doing this. It is still possible, although not recommended, to store data
>in the data fork of a fat binary. The offset field in the cfrg tells the
>CFM where the actual code starts (or other code fragments start). If the
>offset is zero, as it is for most apps I've seen, go ahead and zap the
>data fork.
If you want to just shit-can the data fork and see if the app runs, use
one of the the apps made for munging the registration info that a lot
of apps store in the data fork. A little more elegent than using a
word-processor.
Let's see what we have here...
/folk/johnson/Misc/Umich/mac.archive.umich.edu.gz %71.2
/mac/util/diskfile/anonymity1.2.cpt.hqx
34 12/20/92 BinHex4.0,Compact1.34
Remove the personalization info from programs (like Word and Excel)
that store the info (and ONLY the info) in the data fork.
Yup, that otta do it :-)
--DAVE (johnson@wrs.com)
"And now, a man who faces his destiny at FULL THROTTLE... Its David Letterman!"
(c)1993 CBS
---------------------------
>From Vik_Rubenfeld@lamg.com (Vik Rubenfeld)
Subject: Roman Numerals
Date: 05 Apr 1994 00:21:15 -0000
Organization: (none)
Does anybody have an algorithm for translating an integer into a string that
contains its Roman Numeral equivalent? Thanks in advance.
+++++++++++++++++++++++++++
>From Vik_Rubenfeld@lamg.com (Vik Rubenfeld)
Date: 06 Apr 1994 10:20:10 -0000
Organization: (none)
Thanks for the extremely cool algorithm.
+++++++++++++++++++++++++++
>From Vik_Rubenfeld@lamg.com (Vik Rubenfeld)
Date: 07 Apr 1994 11:32:15 -0000
Organization: (none)
Thanks for your excellent procedure, ArabicToRoman. It was also a good
excercise for me to use in becoming more familiar with C, because I
translated it from C to Pascal. In case you'd like to see it, and in case
others would like a Pascal version, here's what it looks like in Pascal.
procedure ArabicToRoman (arab: integer;
var Rom: DecStr);
const
nFives = 3;
nOnes = 4;
var
reverse: integer;{ stores digits in reverse order (6533 -> 3356) }
mag: integer;{ magnitude of the arabic number (6533 -> 3 ) }
digit: integer;{ current digit being processed }
Fives, Ones: DecStr;
begin
reverse := 0;
mag := -1;
Rom := '';
Fives := 'vld';
Ones := 'ixcm';
while (arab > 0) do
begin
reverse := reverse * 10;
reverse := reverse + (arab mod 10);
arab := arab div 10;
mag := mag + 1;
end;
while reverse > 0 do
begin
digit := reverse mod 10;
reverse := reverse div 10;
if (((mag = nFives) & (digit > 3)) | ((mag = nOnes) & (digit <> 5)) |
((digit = 9) & (mag = nOnes - 1))) then
begin
Rom := 'Cannot Convert';
exit(ArabicToRoman);
end;
case digit of
3:
begin
rom := concat(rom, ones[mag + 1]);
rom := concat(rom, ones[mag + 1]);
rom := concat(rom, ones[mag + 1]);
end;
2:
begin
rom := concat(rom, ones[mag + 1]);
rom := concat(rom, ones[mag + 1]);
end;
1:
rom := concat(rom, ones[mag + 1]);
4:
begin
rom := concat(rom, ones[mag + 1]);
rom := concat(rom, fives[mag + 1]);
end;
5:
rom := concat(rom, fives[mag + 1]);
6:
begin
rom := concat(rom, fives[mag + 1]);
rom := concat(rom, ones[mag + 1]);
end;
7:
begin
rom := concat(rom, fives[mag + 1]);
rom := concat(rom, ones[mag + 1]);
rom := concat(rom, ones[mag + 1]);
end;
8:
begin
rom := concat(rom, fives[mag + 1]);
rom := concat(rom, ones[mag + 1]);
rom := concat(rom, ones[mag + 1]);
rom := concat(rom, ones[mag + 1]);
end;
9:
begin
rom := concat(rom, ones[mag + 1]);
rom := concat(rom, ones[mag + 2]);
end;
otherwise
;
end; {case}
mag := mag - 1;
end; {while}
end;
+++++++++++++++++++++++++++
>From Vik_Rubenfeld@lamg.com (Vik Rubenfeld)
Date: 08 Apr 1994 21:51:07 -0000
Organization: (none)
CMG> Hi there! I have some Pascal code that I wrote for a program that
CMG> converts Decimal, hexadecimal, etc. to Roman Numerals and vice
CMG> versa... I might be able to dig it up : )
CMG>
CMG> What kind of program are you writing?
Thanks! Sure, I'd like to see it. I've adapted a C routine provided by Mike
Mayer, and it's working fine, but the hex part of your code might be neat to
see.
It's a program that tabulates Market Research data. It's the basis of a
business I operate. I wanted to use Roman Numerals for the page numbers in
the table of contents.
---------------------------
>From armitage@marksmac.demon.co.uk (Mark Armitage)
Subject: SCSI Drivers
Date: Thu, 7 Apr 1994 12:54:12 GMT
Organization: Poor, but trying...
Help,
I have a non-apple SCSI drive which requires a SCSI START command to be
sent to it! (Apparently the drive doesn't acually start spinning until
this command is received).
Can anyone point me in the direction of a utility/init or piece of code
that can perform this function?
Thanks,
Mark.
armitage@marksmac.demon.co.uk
+++++++++++++++++++++++++++
>From lankton@spot.Colorado.EDU (LANKTON MARK)
Date: Fri, 8 Apr 1994 13:47:55 GMT
Organization: University of Colorado, Boulder
armitage@marksmac.demon.co.uk (Mark Armitage) writes:
>Help,
>I have a non-apple SCSI drive which requires a SCSI START command to be
>sent to it! (Apparently the drive doesn't acually start spinning until
>this command is received).
>Can anyone point me in the direction of a utility/init or piece of code
>that can perform this function?
>Thanks,
>Mark.
>armitage@marksmac.demon.co.uk
Try this:
#define kStartStopUnitCmd 0x1B
#define kStartCode 0x01
#define kStopCode 0x00
SpinUp(short targetID)
{
short theResult;
unsigned char theCommand[6];
sensePage returnedSense;
short numTries = 0;
Boolean gotBus = false;
int waitTime = 100; /*or so...*/
short returnedStatus = 0;
short returnedMessage = 0;
theCommand[0] = kStartStopUnitCmd;
theCommand[1] = 0x01; /*Don't wait for reply on command */
theCommand[2] = 0;
theCommand[3] = 0;
theCommand[4] = kStartCode;
theCommand[5] = 0;
do
{
numTries++;
theResult = SCSIGet();
if(theResult == noErr)
{
theResult = SCSISelect(targetID);
if(theResult == noErr)
gotBus = true;
}
}
while((numTries <= kMaxSelectTries) && (!gotBus));
if((numTries >= kMaxSelectTries) || !gotBus)
{
printf("SCSI device selection failed on ID = %d",targetID);
return;
}
if(gotBus)
{
theResult = SCSICmd((char *)theCommand,6);
theResult = SCSIComplete(&returnedStatus,&returnedMessage,waitTime);
}
/*Check returnedStatus for errors
}
Mark Lankton (lankton@spot.colorado.edu)
Laboratory for Atmospheric and Space Physics
University of Colorado
---------------------------
End of C.S.M.P. Digest
**********************